package com.dabai.iot.core.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dabai.iot.core.dto.AlarmInput;
import com.dabai.iot.core.dto.AlarmQuery;
import com.dabai.iot.core.entity.AlarmEntity;
import com.dabai.iot.core.vo.AlarmVO;

import java.util.List;

/**
 * 告警配置 Service 接口
 *
 * @author kev1n
 */
public interface IAlarmService extends IService<AlarmEntity> {

    /**
     * 新增
     */
    boolean addAlarm(AlarmInput alarmInput);

    /**
     * 修改
     */
    boolean updateAlarm(AlarmInput alarmInput);

    /**
     * 删除
     */
    boolean removeAlarm(Long alarmId);

    /**
     * 获取配置详细信息
     */
    AlarmVO getAlarmInfo(Long alarmId);

    /**
     * 分页
     */
    IPage<AlarmEntity> getAlarmPage(IPage<AlarmEntity> page, AlarmQuery alarmQuery);

    /**
     * 获取设备关联的告警列表
     */
    List<AlarmEntity> getAlarmListByRelationDevice(Long deviceId);

    /**
     * 获取设备关联的告警列表缓存
     */
    List<AlarmEntity> getAlarmListCacheByRelationDevice(Long deviceId);

    /**
     * 删除与某设备关联的告警配置缓存
     */
    void deleteDeviceRelatedAlarmList(Long deviceId);

}
